perm filename CVTIO.FAI[2,LCS]1 blob
sn#153756 filedate 1975-04-04 generic text, type T, neo UTF8
00100 ;**** UDP PORTIONS ARE FOR STANFORD DISK SYSTEM(USER-DISK PACK)
00200 ; MTA1 ITEMS ARE USED WITH "TAPMUS" (ETC.), TAPE TRANSFER PROGS.
00300 TITLE FSTUDP ; ********* NOV 4,70 *********
00400 INTERNAL INTUDP,TOUDP,FINUDP,TOTAPE,FINTAP,BACKSP
00500 INTERNAL GETTAP,INTAPE,FSTMUS,PUTMUS,FINMUS
00600 INTERNAL MTA1,INMTA1
00700 INTERNAL GETFIL,PUTFIL,FASTIN,FASTOUT,FINFIL
00800 EXTERNAL CVTALC
00900 ; USE UDFAST.DMP[1,3] TO PLAY FROM UDP
01000
01100 FILUDP←←1 ;SET TO 0 FOR NON-FILE STRUCTURED UDP
01200 ;SET TO 1 FOR FILE STRUCTURED UDP
01300 MAXBLK←←=4998 ;=4999 IS USED BY SYSTEM FOR PASSWORD
01400
01500 CH←12
01600 CH2←11
01650 CH3←13
01700 BLKS←←=1
01800
01900 DEFINE ERROR (MSG)
02000 < JSA 16,.ERROR
02100 JUMP [ASCIZ/MSG/
02200 ]
02300 >
02400
02500 REGS: BLOCK 20
02600
02700
02800 ;CALL PUTFIL(<FILE>)
02900
03000 PUTFIL: 0
03100 MOVE 0,@0(16)
03200 MOVEM FILNAM
03300 JSA 16,INTFIL
03400 MOVE 0,[SIXBIT/DMD/]
03500 MOVEM 0,DIR+1
03600 SETZM DIR+2
03700 SETZM DIR+3
03800 ENTER CH2,DIR
03900 0
04000 JRA 16,1(16)
04100
04200 ;CALL FASTOUT(<ARRAY>,<NO. OF WORDS>)
04300
04400 FASTOUT: 0
04500 HRRZ 0,0(16)
04600 SUBI 0,1
04700 MOVEM 0,COM
04800 MOVN 0,@1(16)
04900 HRLM 0,COM
05000 OUTPUT CH2,COM
05100 STATZ CH2,740000
05200 0
05300 JRA 16,2(16)
05400
05500
05800
05900 ;CALL FINFIL
06000
06100 FINFIL: 0
06200 CLOSE CH2,0
06300 STATZ CH,740000
06400 0
06500 RELEASE CH2,0
06600 JRA 16,0(16)
06700
06800 ;CALL GETFIL(<FILE>)
06900
07000 GETFIL: 0
07100 MOVE 0,@0(16)
07200 MOVEM 0,FILNAM
07300 JSA 16,INTFIZ
07400 MOVE 0,[SIXBIT/DMD/]
07500 MOVEM 0,DIR+1
07600 JSA 16,LKUP
07700 SKIPA
07800 JRST GETF3
07900 SETZM DIR+1
08000 JSA 16,LKUP
08100 0
08200 GETF3: JRA 16,1(16)
08300
08400 LKUP: 0
08500 SETZM DIR+2
08600 SETZM DIR+3
08700 LOOKUP CH3,DIR
08800 JRA 16,0(16)
08900 JRA 16,1(16)
09000
09100 INTFIZ: 0 ;INITS DSK FOR INPUT
09200 MOVEI REGS
09300 BLT REGS+3
09400 INIT CH3,17
09500 SIXBIT/DSK/
09600 0
09700 ERROR <CAN'T INIT DSK!>
09800 JRST INTF4
09900
10000 DIR: BLOCK 4
10100
10200
10300 ;CALL FASTIN(<ARRAY>,<NO. WORDS>)
10400
10500 FASTIN: 0
10600 HRRZ 0,0(16)
10700 SUBI 0,1
10800 MOVEM 0,COM
10900 MOVN 0,@1(16)
11000 HRLM 0,COM
11100 INPUT CH3,COM
11200 STATZ CH3,740000
11300 0
11400 JRA 16,2(16)
11450
11500 ;CALL MTA1
11600 MTA1: 0 ;CH2, READS MTA1.
11700 INIT CH2,617
11800 SIXBIT/MTA1/
11900 0
12000 ERROR <CAN'T INIT MTA1>
12100 JRA 16,0(16)
12200 ;CALL INMTA1(<ARRAY>,<NO. OF WORDS>)
12300 INMTA1: 0
12400 HRRZ 0,0(16)
12500 SUBI 0,1
12600 MOVEM 0,COM
12700 MOVN 0,@1(16)
12800 HRLM 0,COM
12900 INPUT CH2,COM
13000 STATZ CH2,740000
13100 ERROR <MAG TAPE READ ERROR>
13200 JRA 16,2(16)
13300
13400 ;CALL PUTMUS(<FILE>)
13500
13600 PUTMUS: 0 ;USES INTMUS,FSTMUS,FINMUS, CH2. WRITES ON 2314.
13700 MOVE 0,@0(16)
13800 MOVEM 0,FILNAM
13900 JSA 16,INTFIL
14010 MOVE 0,DIR
14020 CAME 0,[SIXBIT/MUSIC/] ;IS FILE NAME "MUSIC"
14030 JRST .+3 ;NO -- DO NORMAL ENTER
14040 JSA 16,CVTALC ;YES -- DO EXTENDED ENTER TO
14050 JRA 16,1(16) ;GET 1000 BLOCKS
14060 MOVE 0,[SIXBIT/MUS/]
14100 MOVEM 0,DIR+1
14200 SETZM DIR+2
14300 SETZM DIR+3
14400 ENTER CH2,DIR
14500 ERROR <ENTER FAILED>
14600 JRA 16,1(16)
14700
14800 ;CALL FSTMUS(<ARRAY>,<NO. OF WORDS>)
14900
15000 FSTMUS: 0
15100 HRRZ 0,0(16)
15200 SUBI 0,1
15300 MOVEM 0,COM
15400 MOVN 0,@1(16)
15500 HRLM 0,COM
15600 OUTPUT CH2,COM
15700 STATZ CH2,740000
15800 ERROR <WRITE ERROR>
15900 JRA 16,2(16)
16000
16100 ;CALL INTUDP
16200
16300 INTUDP: 0 ;USES TOUDP, FINUDP, CH2. WRITES ON UDP.
16400 INIT CH2,17
16500 SIXBIT/UDP/
16600 0
16700 ERROR <CAN'T INIT UDP>
16800 IFE FILUDP,<
16900 MOVEM BLKNUM
17000 MOVEI 1
17100 EXCH BLKNUM
17200 >
17300 IFN FILUDP,<
17400 IN CH2,[IOWD 40,UDPBUF
17500 0]
17600 CAIA
17700 ERROR <CAN'T READ UDP BITMAP>
17800 SKIPN 1,UDPBUF+20 ;IS THERE A POINTER TO SCRATCH AREA
17900 MOVEI 1,1 ;NO, START AT BLOCK 1
18000 MOVEM 1,BLKNUM ;SET BLOCK NUMBER
18100 >
18200 ENTER CH2,[0
18300 0
18400 0
18500 0]
18600 ERROR <WRONG PASSWORD, PLEASE MOUNT CORRECT UDP>
18700 JRA 16,0(16)
18800
18900 INTFIL: 0 ;INITS DSK
19000 MOVEI REGS
19100 BLT REGS+3
19200 INIT CH2,17
19300 SIXBIT/DSK/
19400 0
19500 ERROR <CAN'T INIT DSK!>
19600 INTF4: MOVE 0,FILNAM#
19700 MOVEM 0,FN#
19800 MOVE 1,[POINT 7,FN]
19900 INTF3: MOVE 2,[POINT 6,DIR]
20000 SETZM DIR
20100 MOVEI 3,5
20200 INTF1: ILDB 0,1
20300 CAIN 0," "
20400 JRST INTF2
20500 SUBI 0,40
20600 IDPB 0,2
20700 SOJG 3,INTF1
20800 INTF2: HRLZI REGS
20900 BLT 3
21000 JRA 16,0(16)
21100
21200 ;CALL TOTAPE(<ARRAY>,<NO.OF WORDS>) WRITES ON MAGTAPE
21300
21400 TOTAPE: 0
21500 HRRZ 0,0(16)
21600 SUBI 0,1
21700 MOVEM 0,COM
21800 MOVN 0,@1(16)
21900 HRLM 0,COM
22000 OUTPUT CH,COM
22100 STATZ CH,740000
22200 ERROR <MAG TAPE WRITE ERROR>
22300 JRA 16,2(16)
22400
22500 ;CALL GETTAP
22600
22700 GETTAP: 0 ;USES INTAP OR TOTAPE, CH. READS OR WRITES MTA0.
22800 INIT CH,617
22900 SIXBIT/MTA0/
23000 0
23100 ERROR <CAN'T INIT MTA0>
23200 JRA 16,0(16)
23300
23400 ;CALL INTAPE(<ARRAY>,<NO.OF WORDS>) READS MAGTAPE
23500
23600 INTAPE: 0
23700 HRRZ 0,0(16)
23800 SUBI 0,1
23900 MOVEM 0,COM
24000 MOVN 0,@1(16)
24100 HRLM 0,COM
24200 INPUT CH,COM
24300 STATZ CH,740000
24400 ERROR <MAG TAPE READ ERROR>
24500 JRA 16,2(16)
24600
24700 ;CALL TOUDP(<ARRAY>,<NO. OF WORDS>)
24800
24900 TOUDP: 0
25000 HRRZ 0,0(16)
25100 SUBI 0,1
25200 MOVEM 0,COM1
25300 MOVN 0,@1(16)
25400 HRLM 0,COM1
25500 MOVE 0,BLKNUM
25600 CAILE 0,MAXBLK-BLKS+1
25700 ERROR <UDP FULL!>
25800 OUTPUT CH2,COM1
25900 MOVEI 0,BLKS
26000 ADDM 0,BLKNUM
26100 STATZ CH2,740000
26200 ERROR <UDP WRITE ERROR>
26300 JRA 16,2(16)
26400
26500 COM: OCT 0,0
26600 COM1: 0
26700 BLKNUM: 0
26800
26900 ;CALL FINUDP(WORD COUNT)
27000
27100 FINUDP: 0
27200 MOVE 0,@ 0(16)
27300 IFE FILUDP,<
27400 MOVEM 0,[FOO: 0
27500 0 ]
27600 OUTPUT CH2,[IOWD 40,FOO
27700 0 ]
27800 CAIA
27900 >
28000 IFN FILUDP,<
28100 IN CH2,[IOWD 40,UDPBUF
28200 0]
28300 CAIA
28400 ERROR <ERROR IN READING UDP BITMAP!>
28500 MOVEM 0,UDPBUF+21
28600 OUT CH2,[IOWD 40,UDPBUF
28700 0]
28800 JRST FINMUS+1
28900 ERROR <ERROR IN WRITING UDP BITMAP!>
29000 >
29100 ;CALL FINMUS
29200 FINMUS: 0
29300 CLOSE CH2,4
29400 STATZ CH2,740000
29500 ERROR <ERROR AFTER CLOSE>
29600 RELEASE CH2,0
29700 JRA 16,0(16)
29800
29900 FINTAP: 0
30000 CLOSE CH,0
30100 STATZ CH,740000
30200 ERROR <MAG TAPE ERROR AFTER CLOSE>
30300 RELEASE CH,0
30400 JRA 16,0(16)
30500
30600 BACKSP: 0
30700 INIT CH,617
30800 SIXBIT/MTA0/
30900 0
31000 ERROR <CAN'T INIT MTA0>
31100 MTAPE CH,7
31200 JRA 16,0(16)
31300
31400 .ERROR: 0
31500 OUTSTR [ASCIZ/?
31600 /] ;MAKE SURE HE CAN SEE HIS ERROR
31700 OUTSTR @(16) ;OUTPUT ERROR MESSAGE
31800 CALLI 1,12 ;LET USER CONTINUE
31900 JRA 16,1(16)
32000 UDPBUF: BLOCK 40
32100 ;END
33000 ; TITLE NORM ;DEB, 11/13/69
33100
33200 ; CALL NORM(ARRAY,SIZE,FACTOR)
33300 ; UNPACKS 18-BIT SMPLS, NORMALIZES, REPACKS AS 12-BIT SMPLS.
33400 ; ---- 3K OF 18-BIT BECOMES 2K OF 12-BIT
33500 ;****** BE SURE TO SET FACTOR FOR 9-BIT SO MAXAMP IS NOT >255.
33600
33700
33800 INTERNAL NORM
33900
34000 X ← 2 ;LOOP AND INDEX
34100 T ← 3 ;BASE OF IBOTT
34200
34300
34400 NORM: 0
34500 HRR X,0(16)
34600 MOVN T,@1(16)
34700 HRL X,T
34800 HRR T,X
34900 HRLI T,441400 ;FOR 12-BIT. USE 441100 FOR 9-BIT
35000 MOVE 4,@2(16)
35100 ;;FOR STANFORD ONLY FIX 4,212000
35200 ; NEXT IS EXPORT FIX (TO N10:)
35300 FSC 4,21
35400 MULI 4,400
35500 TSC 4,4
35600 EXCH 4,5
35700 ASH 4,-243(5)
35800 N10: HLL 0(2)
35900 MUL 4
36000 IDPB T
36100 HRL 0(2)
36200 MUL 4
36300 IDPB T
36400 AOBJN X,N10
36500 JRST 3(16)
36600 0
36700 ANDCBM 4,-6 ; THESE ARE THE CONSTANTS
36800 ANDCBI 10,-3
36900
37000 END